home *** CD-ROM | disk | FTP | other *** search
/ 64'er / 64ER_CD.iso / 86xx / 8603.d64 / kudiplo 64 (.txt) < prev    next >
Commodore BASIC  |  1995-03-30  |  8KB  |  279 lines

  1. 100 REM***********KUDIPLO**************
  2. 110 REM FUNKTION DISKUTIEREN + PLOTTEN
  3. 120 REM  MIT C-64 UND  PLOTTER VC-1520
  4. 130 REM
  5. 140 REM          JUERGEN CURDT
  6. 150 REM         KESSEMEIERWEG 5
  7. 160 REM           493 DETMOLD
  8. 170 REM
  9. 180 REM********************************
  10. 190 POKE53280,11:POKE53281,11:AF=11
  11. 200 :
  12. 210 REM PARAMETER UND VARIABLE LESEN
  13. 220 :
  14. 230 EIN=49152:OF=49410:AN=49234:CL=49182:FB=49203
  15. 240 F$="SIN(X)+ SIN(X*2)"
  16. 250 DEFFNF(X)=SIN(X)+ SIN(X*2)
  17. 260 DEFFNF1(X)=(FNF(X+1E-4)-FNF(X-1E-4))/2E-4
  18. 270 DEFFNF2(X)=(FNF1(X+1E-4)-FNF1(X-1E-4))/2E-4
  19. 280 XU=-4:XO= 4:YU=-4:YO= 4:OY= 0
  20. 290 XN= 280:YN= 0
  21. 300 XE=(XO-XU)/16:YE=(YO-YU)/16:XW=XU
  22. 310 PRINT"[147][144]"TAB(81)"FUNKTIONEN PLOTTEN UND DISKUTIEREN MIT"
  23. 320 PRINT"    C 64 UND PRINTER-PLOTTER VC-1520            ODER BILDSCHIRMAUSGABE
  24. 330 [129]I[178]0[164]39:[153]"POS";:[130]:[153]
  25. 335 :
  26. 340 [143]    EINGABE DER FUNKTION
  27. 345 :
  28. 350 [153][166]120)"ALS FUNKTION WIRD DARGESTELLT:"
  29. 360 X[178]5:Y[178]15:[141]2370:[153]"Y=";F$
  30. 370 [153][163]160):[139][194](49152)[170][194](49153)[178]62[167]400
  31. 380 [153][163]5)"EIN WENIG GEDULD BITTE !"
  32. 390 [141]5000:[158]CL
  33. 395 [147]"HC EPSON*",8,1
  34. 400 [153]"ONSTOPSOLL DIE FUNKTION VERAENDERT WERDEN ?":[153][163]57)"J/N"
  35. 410 [161]E$:[139]E$[178]"N"[167]590
  36. 420 [139]E$[179][177]"J"[167]410
  37. 430 [153]"LOADSTOP"[163]80)"BITTE DIE FUNKTION EINGEBEN ODER AENDERN"
  38. 440 [129]I[178]0[164]39:[153]"TAN";:[130]:[153]
  39. 450 [153]"WENN DIE FUNKTION IM DIVISOR DENCLOSEFAKTOR X ENTHAELT, SOLLTE DER GANZE ";
  40. 460 [153]"DIVISOR IN         KLAMMERN GESETZT WERDEN.":[153]
  41. 470 [129]I[178]0[164]39:[153]"POS";:[130]:[153]
  42. 480 X[178]5:Y[178]16:[141]2370:[153]"Y=  "F$;
  43. 490 [153][163]243)"EINGABE IN UEBLICHER BASIC-SYNTAX
  44. 500 X=7:GOSUB2370:INPUTF$
  45. 510 PRINT"[147]"TAB(240)TAB(250)"[144]MOMENT BITTE !"
  46. 520 PRINT"[151]240F$="CHR$(34)F$CHR$(34)"
  47. 530 [153]"250DEFFNF(X)="F$"
  48. 540 PRINT"280 XU="XU"[157]:XO="XO"[157]:YU="YU"[157]:YO="YO"[157]:OY="OY
  49. 550 PRINT"1390Y="F$":GOTO1410"
  50. 560 PRINT"2260Y="F$":GOTO2280"
  51. 570 PRINT"290 XN="XN"[157]:YN="YN:PRINT"SV="SV"[157]:BS="BS"[157]:AF="AF"[157]:GOTO220"
  52. 580 POKE631,19:FORI=632TO640:POKEI,13:NEXT:POKE198,9:END
  53. 590 PRINT"[147][144]"TAB(120)"DIE PARAMETER FUER DIE DARSTELLUNG:"
  54. 600 PRINTTAB(120)"UNTERSTER X-WERT: "XU
  55. 610 PRINTTAB(80)"[144]OBERSTER  X-WERT: "XO
  56. 620 PRINTTAB(120)"[144]UNTERSTER Y-WERT: "YU
  57. 630 PRINTTAB(80)"[144]OBERSTER  Y-WERT: "YO
  58. 640 PRINTTAB(120)"[144]SOLLEN DIE PARAMETER VERAENDERT WERDEN ?":PRINTTAB(17)"J/N"
  59. 650 GETE$:IFE$="N"THEN820
  60. 660 IFE$<>"J"THEN650
  61. 670 PRINT"";:SYSCL:BS=0:SV=0
  62. 680 X=16:Y=7:GOSUB2370:INPUTXU
  63. 690 X=16:Y=10:GOSUB2370:INPUTXO
  64. 700 XE=(XO-XU)/16:IFXE<=0THEN680
  65. 710 IFSGN(XU)=SGN(XO)THENXN=80:GOTO730
  66. 720 XN=ABS(XU)*25/XE+80
  67. 730 X=16:Y=14:GOSUB2370:INPUTYU
  68. 740 X=16:Y=17:GOSUB2370:INPUTYO
  69. 750 YE=(YO-YU)/16:IFYE=<0THEN730
  70. 760 REM ACHSENSCHNITTPUNKT BERECHNEN
  71. 770 IFSGN(YU)<>SGN(YO)THEN800
  72. 780 IFYO<=0THENYN=200:OY=ABS(YO*25/YE)+200:GOTO810
  73. 790 IFYU>=0THENYN=-200:OY=-200-YU*25/YE:GOTO810
  74. 800 YN=ABS(YU)*25/YE-200:OY=YN
  75. 810 GOTO590
  76. 815 :
  77. 820 REM HAUPTMENUE
  78. 825 :
  79. 830 PRINT"[147][144]";:FORI=0TO39:PRINT"[195]";:NEXT
  80. 840 PRINT"  Y="F$:PRINT"  IM BEREICH VON X="XU" BIS X="XO
  81. 850 PRINT"  SKALENEINHEIT AUF DEM BILDSCHIRM:
  82. 860 [153]"  X-ACHSE "XE[172]2,"Y-ACHSE "YE[172]2
  83. 870 [153]"STOP";:[129]I[178]0[164]39:[153]"LEN";:[130]
  84. 880 [153]"STOPDIE AUSGABE ERFOLGT AUF DEM ";
  85. 890 [139]AF[178]10[167][153]"  PLOTTER  WAIT":[137]910
  86. 900 [153]"BILDSCHIRM WAIT"
  87. 910 [153]"WSTOPECHSEL DES AUSGABEGERAETES           WSTOP"
  88. 920 [129]I[178]0[164]39:[153]"LEN";:[130]
  89. 930 [153][163]51)"WELCHE AUFGABE ?
  90. 940 PRINTTAB(40)"Z[153]EICHNEN  DER  FUNKTION"TAB(38)"Z"
  91. 950 PRINTTAB(40)"K[153]URVENDISKUSSION AUSGEBEN"TAB(38)"K"
  92. 960 PRINTTAB(40)"P[153]ARAMETER AENDERN"TAB(38)"P"
  93. 970 PRINTTAB(40)"F[153]UNKTION  AENDERN"TAB(38)"F"
  94. 980 PRINTTAB(40)"U[153]MSCHALTEN AUF  GRAFIKBILDSCHIRM"TAB(38)"U"
  95. 990 PRINTTAB(40)"L[153]OESCHEN DES  GRAFIKBILDSCHIRMS"TAB(38)"L"
  96. 1000 PRINTTAB(40)"H[153]ARDCOPY DES GRAFIKBILDSCHIRMS"TAB(38)"H"
  97. 1010 POKE198,0:SYS62255
  98. 1020 GETA$:IFA$<>"W"THEN1050
  99. 1030 IFAF<>11THENAF=11:GOTO820
  100. 1040 IFAF<>10THENAF=10:GOTO820
  101. 1050 IFA$<>"Z"THEN1080
  102. 1060 IFAF=10THEN1160
  103. 1070 SYSEIN+3:SYSFB,27:GOTO2020
  104. 1080 IFA$="F"THEN310
  105. 1090 IFA$="L"THENSYSCL:BS=0:GOTO1020
  106. 1100 IFA$="K"THENPRINT"[147]":GOSUB1480:GOTO820
  107. 1110 IFA$="U"THENSYSEIN+3:SYSFB,27:GOTO2320
  108. 1120 IFA$="H"THENSYSEIN+3:SYSFB,27:GOSUB2520:SYSOF:GOTO820
  109. 1130 IFA$<>"P"THEN1020
  110. 1140 PRINT"[147]";
  111. 1150 SYSCL:GOTO590
  112. 1155 :
  113. 1160 REM  KREUZ PLOTTEN
  114. 1165 :
  115. 1170 OPEN1,6,1:OPEN2,6,2:OPEN3,6,3:OPEN10,6
  116. 1180 IFSVTHEN1330
  117. 1190 PRINT#3,0:PRINT#2,1
  118. 1200 PRINT#10:PRINT#1,"M";0;-440:PRINT#1,"M";0;-200:PRINT#10
  119. 1210 PRINT#1,"M";80;YN:FORI=0TO14STEP2
  120. 1220 PRINT#1,"I":PRINT#1,"R";0;4:PRINT#1,"J";0;-4
  121. 1230 PRINT#1,"R";-12;-14
  122. 1240 PRINT#10,INT((XE*I+XU)*100+.5)/100;
  123. 1250 PRINT#1,"M";80+I*25;YN:PRINT#1,"D";80+(I+2)*25;YN
  124. 1260 NEXT:PRINT#1,"M";75+I*25;YN-4:PRINT#10,">";
  125. 1270 PRINT#1,"M";XN;-200
  126. 1280 FORI=0TO14STEP2:PRINT#1,"I":PRINT#1,"R";4;0
  127. 1290 PRINT#1,"J";-4;0:PRINT#1,"R";-30;-4
  128. 1300 J=YU+INT(YE*100*I+.5)/100:IFJ<>0THENPRINT#10,J;
  129. 1310 PRINT#1,"M";XN;I*25-200:PRINT#1,"D";XN;(I+2)*25-200
  130. 1320 NEXT:PRINT#1,"M";XN-5;I*25-209:PRINT#3,1:PRINT#10,"^";
  131. 1325 :
  132. 1330 REM KURVE PLOTTEN
  133. 1335 :
  134. 1340 PRINT"[147][144]"TAB(250)"ETWAS GEDULD BITTE":PRINT#2,SV+3
  135. 1350 E$="M":XW=XU:IFXU=0THENXW=1E-6
  136. 1360 GOSUB2340
  137. 1370 J=(XO-XU)/400:FORI=0TO400
  138. 1380 X=J*I+XW
  139. 1390 Y=SIN(X)+ SIN(X*2):GOTO1410
  140. 1400 E$="M":GOTO1440
  141. 1410 Y=Y/YE*25+OY
  142. 1420 IFY>210ORY<-210THENE$="M":GOTO1440
  143. 1430 PRINT#1,E$;I+80;Y:E$="D"
  144. 1440 NEXT:GOSUB2350
  145. 1450 PRINT#1,"M";0;180-SV*20:PRINT#3,1:PRINT#10,"Y="F$;
  146. 1460 PRINT#1,"M";0;-250
  147. 1470 SV=SV+1:SYS62255:GOTO820
  148. 1480 REM       KURVENDISKUSSION AUSGEBEN
  149. 1490 OPEN1,6,1:OPEN2,6,2:OPEN3,6,3:OPEN10,6:OPEN11,3
  150. 1500 IFAF=10THENPRINT#1,"M";0;180-SV*25:PRINT#3,0
  151. 1510 PRINT"[147]FUNKTION:":PRINTTAB(6)"Y="F$
  152. 1520 PRINT#AF
  153. 1530 PRINT#AF,"KURVENDISKUSSION  VON X="XU"BIS X="XO:PRINT#AF
  154. 1540 PRINT#AF,"  NULLSTELLEN:"
  155. 1550 S1=XE/5:GOSUB2340
  156. 1560 A=FNF(XU-1E-4)
  157. 1570 FORX=XU+S1TOXOSTEPS1
  158. 1580 F=FNF(X)
  159. 1590 IFSGN(F)=SGN(A)THEN1720
  160. 1600 S=X-S1:Z=X:C=X-S1/2
  161. 1610 FC=FNF(C)
  162. 1620 FZ=FNF(Z)
  163. 1630 IFSGN(FC)<>SGN(FZ)THENS=C:GOTO1650
  164. 1640 Z=C
  165. 1650 C=(S+Z)/2
  166. 1660 IFABS(Z-S)>1E-6THEN1610
  167. 1670 FD=FNF1(C)
  168. 1680 IFABS(FC)<1E-4THEN1710
  169. 1690 IFABS(FD)>1E3THENPRINT#AF,"  SPRUNG BEI X="INT(C*1E4+.5)/1E4:GOTO1720
  170. 1700 GOTO1610
  171. 1710 PRINT#AF,TAB(6)INT(C*1E4+.5)/1E4;"/0","F'=";INT((FD)*1E4+.5)/1E4
  172. 1720 A=F
  173. 1730 NEXTX
  174. 1740 PRINT#AF,"  EXTREMA:":XW=XU
  175. 1750 A=FNF1(XW)
  176. 1760 FORX=XU+S1TOXOSTEPS1
  177. 1770 F=FNF1(X)
  178. 1780 IFSGN(F)=SGN(A)THEN1940
  179. 1790 S=X-S1:Z=X:C=X-S1/2
  180. 1800 FC=FNF1(C)
  181. 1810 FZ=FNF1(Z)
  182. 1820 IFSGN(FC)<>SGN(FZ)THENS=C:GOTO1840
  183. 1830 Z=C
  184. 1840 C=(S+Z)/2
  185. 1850 IFABS(Z-S)>1E-5THEN1800
  186. 1860 IFABS(FC)<1E-2THEN1880
  187. 1870 GOTO1950
  188. 1880 FD=FNF2(C)
  189. 1890 IFABS(FD)<1E-5THENPRINT#AF,"      SATTEL";:GOTO1920
  190. 1900 IFFD>0THENPRINT#AF,"      MIN.";:GOTO1920
  191. 1910 IFFD<0THENPRINT#AF,"      MAX.";
  192. 1920 FA=FNF(C):GOTO1930
  193. 1930 PRINT#AF,TAB(7)INT(C*1E4+.5)/1E4"/"INT(FA*1E4+.5)/1E4:GOTO1950
  194. 1940 IFABS(F)<1E-6THENC=X:GOTO1890
  195. 1950 A=F:NEXTX:GOSUB2350:POKE198,0:IFAF<>10THEN2000
  196. 1960 PRINT#1,"M";0;-275
  197. 1970 PRINTTAB(15)" FERTIG [146]"
  198. 1980 PRINT" IN DAS GLEICHE ACHSENKREUZ KANN KEINE"
  199. 1990 PRINT"  WEITERE FUNKTION GEPLOTTET WERDEN !":WAIT198,1:GOTO820
  200. 2000 PRINTTAB(10)"ENDE DER AUSGABE[146]":SYS62255:WAIT198,1:RETURN
  201. 2010 :
  202. 2020 REM AUSGABE AUF BILDSCHIRM
  203. 2030 :
  204. 2040 REM Y-ACHSE-ZEICHNEN BS
  205. 2050 YK=(200-YN)*.5:IFYK<0THENYK=0
  206. 2060 IFYK>199THENYK=199
  207. 2070 IFBSTHEN2230
  208. 2080 BS=1:XK=(XN-80)*.5+60
  209. 2090 FORY=0TO199:SYSAN,XK,Y:NEXT
  210. 2100 UN=XK-2
  211. 2120 FORI=0TO7
  212. 2130 FORJ=UNTOUN+5:SYSAN,J,I*25:NEXTJ,I
  213. 2140 UN=YK-3:IFUN<0THENUN=0
  214. 2150 IFUN+5>199THENUN=194
  215. 2160 FORX=60TO259:SYSAN,X,YK:NEXT
  216. 2170 FORI=0TO8:FORJ=UNTOUN+5
  217. 2180 SYSAN,I*25+60,J
  218. 2190 NEXTJ,I
  219. 2200 :
  220. 2210 REM KURVE ZEICHNEN BS
  221. 2220 :
  222. 2230 GOSUB2340:XW=XU:IFXW=0THENXW=1E-6
  223. 2240 J=(XO-XU)/200:YK=100-OY/2
  224. 2250 FORI=1TO200:X=J*I+XW
  225. 2260 Y=SIN(X)+ SIN(X*2):GOTO2280
  226. 2270 GOTO2310
  227. 2280 Y=YK-Y/YE*12.5
  228. 2290 IFY<0ORY>199THEN2310
  229. 2300 SYSAN,I+60,Y
  230. 2310 NEXT:GOSUB2350
  231. 2320 POKE198,0:WAIT198,1:SYSOF:GOTO820
  232. 2330 REM UP FEHLERROUTINE EIN- AUS
  233. 2340 POKE768,23:POKE769,193:RETURN
  234. 2350 POKE768,139:POKE769,227:RETURN
  235. 2360 REM UP  CURSOR POSITIONIEREN
  236. 2370 POKE211,X:POKE214,Y:SYS58732:RETURN
  237. 2380 :
  238. 2500 REM UP HARDCOPY DRUCKEN
  239. 2510 :
  240. 2520 SYS62255
  241. 2530 REM EINSPRUNG IN DAS MP HARDCOPY:
  242. 2540 SYS49440,8192,3
  243. 2550 SYS62255:SYSOF
  244. 2555 REM HARDCOPY BESCHRIFTEN:
  245. 2560 OPEN1,4:PRINT#1:PRINT#1
  246. 2565 PRINT#1,"    FUNKTION: Y="F$
  247. 2570 PRINT#1,"    SKALENEINHEIT AUF DER X-ACHSE:"XE*2
  248. 2580 PRINT#1,"                          Y-ACHSE:"YE*2
  249. 2590 PRINT"[147]"TAB(240)" SOLL DIE KURVENDISKUSSION AUSGEDRUCKT
  250. 2600 [153][163]55)"WERDEN ?":[153][163]57)"J/N"
  251. 2610 [161]A$:[139]A$[178]"N"[167]2640
  252. 2620 [139]A$[179][177]"J"[167]2610
  253. 2630 AF[178]1:[141]1510:AF[178]11
  254. 2640 [158]62255:[142]
  255. 5000 :
  256. 5010 [143] ERSTELLEN DES MP. FEINGRAFIK
  257. 5020 :
  258. 5030 [129]I[178]49152[164]49429
  259. 5040 [135]X:[151]I,X:[130]
  260. 5050 [131]32,30,192,173,17,208,141,17,193,173,24,208,141,18,193,169,59,141,17
  261. 5060 [131]208,169,24,141,24,208,162,16,76,57,192,160,0,162,32,132,253,134,254
  262. 5070 [131]152,234,145,253,200,208,251,230,254,202,208,246,96,32,253,174,32,158
  263. 5080 [131]183,160,0,169,4,132,253,133,254,138,162,4,145,253,200,208,251,230,254
  264. 5090 [131]202,208,246,96,169,128,44,169,0,133,151,32,253,174,32,235,183,224,200
  265. 5100 [131]176,238,165,21,201,1,144,8,208,230,165,20,201,64,176,224,138,74,74
  266. 5110 [131]74,10,168,185,200,192,141,20,193,185,201,192,141,21,193,138,41,7,24
  267. 5120 [131]109,20,193,141,20,193,165,20,41,248,141,19,193,24,169,0,109,20,193
  268. 5130 [131]133,253,169,32,109,21,193,133,254,24,165,253,109,19,193,133,253,165
  269. 5140 [131]254,101,21,133,254,165,20,41,7,73,7,170,189,250,192,160,0,36,151,16
  270. 5150 [131]5,73,255,49,253,44,17,253,145,253,96,0,0,64,1,128,2,192,3,0,5,64,6
  271. 5160 [131]128,7,192,8,0,10,64,11,128,12,192,13,0,15,64,16,128,17,192,18,0,20
  272. 5170 [131]64,21,128,22,192,23,0,25,64,26,128,27,192,28,0,30,1,2,4,8,16,32,64
  273. 5180 [131]128,173,17,193,141,17,208,173,18,193,141,24,208,76,68,229,0,0,0,0,0
  274. 5190 [143] ERSTELLEN FEHLERROUTINE
  275. 5200 [129]I[178]49431[164]49439:[135]X:[151]I,X:[130]
  276. 5210 [131]138,48,3,76,59,169,76,116,164
  277. 5220 [142]
  278. 5230 [143]             ENDE
  279.